<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>


<script>
  // 1.使用setTimeout
  // setTimeout(()=>{
  //     console.log('hello world')
  // },1000)

  //promise函数的参数本身是一个函数
  //resolve,reject本身也是函数
  //在回调resolve后，在promise结尾可以使用then方法，then方法里面也是一个函数

  //
  // new Promise((resolve, reject)=>{
  //     //第一次网络请求
  //     setTimeout(()=>{
  //         resolve()
  //     },1000)
  // }).then(()=>{
  //     //第一次拿到处理结果的代码
  //     console.log('hello world')
  //     return new Promise((resolve, reject)=>{
  //         //第二次网络请求的代码
  //         setTimeout(()=>{
  //             resolve()
  //         },1000)
  //     }).then(()=>{
  //         //第二次处理的代码
  //         console.log('Hello Vuejs')
  //         return new Promise((resolve, reject)=>{
  //             //第三次网络请求的代码
  //             setTimeout(()=>{
  //                 resolve()
  //             },1000)
  //         }).then(()=>{
  //             //第三次处理的代码
  //             console.log('Hello Python')
  //         })
  //     })
  // })


  //什么情况下会用到Promise?  一般情况下，是有异步操作时，使用Promise对异步操作进行封装
  //new -> 构造函数(1.保存一些状态信息 2.执行传入的函数)
  //在执行传入的回调函数的时候，会传入两个参数，resolve,reject ,本身又是函数
  //resolve是成功时候的调用，在后面.then     reject是失败时候的调用，在后面.catch
  new Promise((resolve, reject)=>{
      setTimeout(()=>{
          //成功的时候调用resolve
        resolve('Hello World')
          //失败的时候调用reject
        reject('error Message')
      },1000)
  }).then((data)=>{
      //1.100行的处理代码
      console.log(data)
  }).catch((err)=>{
      console.log(err)
  })

  //Promise的三种状态   sync同步    async异步
  //   1.pending 等待时间，比如正在进行网络请求或者定时器没有到时间
  //   2.fulfill  满足状态，当我们主动回调了resolve时候，就处于该状态，并且回调.then(()=>{})
  //   3.reject  拒绝状态，当我们主动回调了reject时间，就处于该状态，并且回调.catch(()=>{})




</script>
</body>
</html>